#ifndef SDL_COLOR_H
#define SDL_COLOR_H

#include "gamekit/gamekit.h"

namespace gamekit {

	class GK_API Color
	{
		private:
			unsigned char m_r;
			unsigned char m_g;
			unsigned char m_b;
			unsigned char m_a;
		public:
			Color();
			Color(const unsigned char& r, const unsigned char& g, const unsigned char& b);
			Color(const unsigned char& r, const unsigned char& g, const unsigned char& b, const unsigned char& a);
			~Color(void);

			unsigned char r(void) const;
			unsigned char g(void) const;
			unsigned char b(void) const;
			unsigned char a(void) const;

			void setR(const unsigned char& r);
			void setG(const unsigned char& g);
			void setB(const unsigned char& b);
			void setA(const unsigned char& a);

			Color operator =(const Color& color);

			static Color alphaBlend(const Color& bg, const Color& color);
	};


	class Colors
	{
	public:

		static inline Color Transparent()
		{
			return Color(0, 0, 0, 0);
		}

		static inline Color Red()
		{
			return Color(255, 0, 0);
		}

		static inline Color Green()
		{
			return Color(0, 255, 0);
		}

		static inline Color Blue()
		{
			return Color(0, 0, 255);
		}

		static inline Color Black()
		{
			return Color(0, 0, 0);
		}

		static inline Color White()
		{
			return Color(255, 255, 255);
		}

		static inline Color Yellow()
		{
			return Color(255, 255, 0);
		}
	};

}

#endif
